package com.songlanyun.modules.opus.service;

import com.songlanyun.common.drive.IBaseService;
import com.songlanyun.common.enums.OpusConstant;
import com.songlanyun.common.utils.PageUtils;
import com.songlanyun.modules.comment.entity.UserComment;
import com.songlanyun.modules.opus.entity.Opus;
import com.songlanyun.modules.opus.model.dto.BbsDTO;
import com.songlanyun.modules.opus.model.dto.OpusDTO;

import java.util.List;
import java.util.Map;

/**
 * 作品表
 *
 * @author lubo
 * @email sunlightcs@gmail.com
 * @date 2021-01-13 16:35:02
 */
public interface OpusService extends IBaseService<Long, Opus> {

    PageUtils allList(Map<String, Object> params);

    PageUtils themeList(Map<String, Object> params);

    PageUtils meList(Map<String, Object> params);

    Opus add(Long userId, OpusDTO dto);

    void deleteById(Long oid);

    Opus getById(Long id, boolean isThrow);

    Opus appInfo(Long userId, Long id);

    Opus adminInfo(Long id);

    //已优化存入redis
//    void browse(Long id, Long userId);
//
//    void like(Long id, Long userId);
//
//    void share(Long id, Long userId);
//
    void comment(UserComment userComment);

    Opus audit(Opus opus);

    void stick(Opus opus);

    Map<String, Object> cancelLike(Long id, Long userId);

    Map<String, Object> cacheBbs(BbsDTO dto);

    void sendMessage(Long userId, Long opusId, OpusConstant.BbsType bbsType, String title);

    Integer releaseNum(Long userId);

}

